import shutil
import pandas as pd
import os

def create_directory_if_not_exists(filename):
    basename = os.path.basename(filename)
    directory = os.path.dirname(filename)

    directory_path = os.path.join(directory, basename)
    
    # 检查目标文件夹是否存在，若不存在则创建
    if not os.path.exists(directory_path):
        os.makedirs(directory_path)
        print(f"  文件夹 '{basename}' 已创建。")
    else:
        print(f"  文件夹 '{basename}' 已存在，不需要创建。")

# 用于合并 Excel 文件
def merge_excel_files(folder):
    print('  子文件块合并中...')
    # 获取目录中所有的 Excel 文件
    excel_files = [file for file in os.listdir(folder) if file.endswith(".xlsx")]

    if not excel_files:
        print("  目录中没有找到任何 Excel 文件。")
        return

    # 合并文件的表头
    header = None

    # 用于存储所有数据的 DataFrame
    combined_data = pd.DataFrame()

    # 逐个读取和合并 Excel 文件
    for file in excel_files:
        file_path = os.path.join(folder, file)

        # 读取当前 Excel 文件的数据
        data = pd.read_excel(file_path, header=header)

        # 更新表头（仅在第一个文件时更新）
        if header is None:
            header = 0

        # 合并数据
        combined_data = pd.concat([combined_data, data])

        print(f"  合并子文件快: {file} ...")


    # 合并后的文件名为目录的基本名称
    output_file = os.path.basename(folder) + ".xlsx"
    # 将合并的数据写入新的 Excel 文件
    output_path = os.path.join(os.path.dirname(folder), output_file)
    combined_data.to_excel(output_path, index=False)

    print(f"  子文件快合并完成: {output_file}, 清除临时文件中...")
    shutil.rmtree(folder)
    print(f"  OK.")

def get_allfiles_path(path):
    Absolute_path = []
    a = []
    b = []
    for dirpath, dirnames, filenames in os.walk(path):  
        a.append(os.path.join(dirpath))
        b.append(filenames)
    for i in a:                      
        dir_list = os.listdir(i)    
        for j in dir_list:
            sub_dir = os.path.join(i, j)
            if os.path.isdir(sub_dir):    
                pass
            else:  
                Absolute_path.append(sub_dir)
    return(Absolute_path,b)[0]

def clear_sub_items(directory):
    # 遍历目录中的所有文件和子目录
    for root, dirs, files in os.walk(directory, topdown=False):
        # 删除子文件
        for file in files:
            file_path = os.path.join(root, file)
            os.remove(file_path)
        # 删除子目录
        for dir in dirs:
            dir_path = os.path.join(root, dir)
            shutil.rmtree(dir_path)